<?php


namespace app\api\controller;



use think\facade\Config;
use think\facade\Request;
use think\Response;

/**
 * Class Base
 *
 * @package app\controller
 */
abstract class Base
{
    /**
     * @var int
     */
    protected $page;
    /**
     * @var int
     */
    protected $page_size;

    /**
     * Base constructor.
     */
    public function __construct()
    {
        //获取分页
        $this->page = (int)Request::param('page');
        //获取条数
        $this->page_size = (int)Request::param('page_size',Config::get('app.page_size'));
    }

    /**
     * @param        $data
     * @param string $msg
     * @param int    $code
     * @param string $type
     *
     * @return Response
     */
    protected function create($data,string $msg='',int $code=200,string $type='json'):Response
    {
       //标准api结构生成
       $result = [
           //状态码
           'code'=>$code,
           //消息
           'msg'=>$msg,
           //数据
           'data'=>$data
       ];

       return Response::create($result,$type);
   }


    //魔术方法 如果调用一个对象中不存在的方法 __call()会自动被调用 必须public修饰

    /**
     * @param $name
     * @param $arguments
     *
     * @return Response
     */
    public function __call($name, $arguments)
    {
        // TODO: Implement __call() method.
        return $this->create([],'方法资源不存在',404);
    }
}